function Axios(config) {
    // 初始化
    this.default = config;
    this.intercepters = {
        request: {},
        response: {}
    }
}

// 原型添加相关的方法
Axios.prototype.request = function(config){
    console.log("发送AJAX请求，请求的类型" + config.method);
}
Axios.prototype.get = function(config){
    return this.request({method: 'get'})
}
Axios.prototype.post = function(config){
    return this.request({method: 'post'})
}

// dispatchRequest函数
function dispatchRequest() {

}
// xhrAdapter适配器
function xhrAdapter(){

}


function createInstance(config) {
    // 实例化对象
    let context = new Axios(config); // context.get 但是不能当作函数调用 例如context()
    // 创建请求函数
    let instance = Axios.prototype.request.bind(context); // instance是一个函数。并且可以instance({}), 但是不能instance.get()这样使用
    // 将Axios.prototype对象中的方法添加到instace函数对象中
    Object.keys(Axios.prototype).forEach(key => {
        instance[key] = Axios.prototype[key].bind(context);
    })
    // 为instance函数对象添加default与interceptors属性
    Object.keys(context).forEach(key => {
        instance[key] = context[key];
    })
}

let axios = createInstance()
axios({method: 'post'})
axios.get();